package huu.eventLoop;


//import io.netty.channel.DefaultEventLoopGroup;
//import io.netty.channel.EventLoopGroup;

import io.netty.channel.DefaultEventLoopGroup;

import java.util.concurrent.TimeUnit;

/**
 * @author huu
 * @create 2025-08-28-14:33
 */
public class Main {
    public static void main(String[] args) {
        //这是api
//        //有多个构造函数，1.同时线程是有序的jdk的线程池是无序的,2.jdk线程池无定时任务，3.jdk动态创建，netty的这个一开始就创建了
//        EventLoopGroup group = new DefaultEventLoopGroup(4);
//        //可以发现每次都是线程1多打印了一次
//        //可以简单理解为打印是并发不安全的，他实际上是有一个缓存区，有的线程执行的快，先写入。但是任务执行肯定是第一个线程先去执行
//        for(int i = 0; i < 5; i++){
//            group.execute(()->{
//                System.out.println(Thread.currentThread().getName());
//            });
//        }
        EventLoopGroup group = new huuEventLoopGroup(4);
        for (int i = 0; i < 100; i++) {
            //指定线程
            group.execute(new TargetRunnable(1,()-> System.out.println(Thread.currentThread().getName())));
        }


        group.scheduleAtFixedRate(()->{
            System.out.println(Thread.currentThread().getName());
        }, 0, 1, TimeUnit.SECONDS);

        for(int i = 0; i < 1000; i++){
            group.execute(()->{
                System.out.println(1);
                try{
                    Thread.sleep(100);
                }catch (InterruptedException e){
                    throw new RuntimeException(e);
                }
            });
        }


    }
}
